#pragma once

#define _GNU_SOURCE
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <errno.h>
#include <time.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <stdarg.h>
#include "error.h"
#include "plugin.h"
#include "command.h"
#include "event.h"


void tell(plugin*, const char *fmt, ...);
void tellall(const char *fmt, ...);
void plugin_watch(plugin*);
void plugin_unwatch(plugin*);
void cmd_quit(plugin*);
void quit(void);
void error(const char*);
void __debug(const char*,int,const char *fmt,...) __attribute__((format(printf, 3, 4)));
plugin *term;

#define QUOTE(x) #x
#define VAL2STR(x)      QUOTE(x)
#define MAX_FILE_LEN 64
#define MAX_CMD_LEN 31
#define MAX_ATTR_LEN 63
#define MAX_PLUGINS 64
#define SEPARATOR "::"

#if D > 0
#warning debugging enabled
#define DEBUG(...) __debug(__FUNCTION__, __LINE__, __VA_ARGS__)
#else
#define DEBUG(...) do {} while(0)
#endif
